#pragma once

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

const std::string gpipeFile = "./fifo";
const mode_t gmode = 0600;
const int dfultfd = 0;
const int gsize = 1024;
const int gForRead = O_RDONLY;
const int gForWrite = O_WRONLY;
int OpenPipe(int flag)
{

    int fd = ::open(gpipeFile.c_str(),flag);
    if (fd < 0)
    {
        std::cerr << "open error" << std::endl;
        return false;
    }
    return fd;
}

void ClosePipeHelper(int fd)
{
    if(fd >= 0)
         ::close(fd);
}

// class Init
// {
// public:
//     Init()
//     {
//         umask(0);
//         int n = ::mkfifo(gpipeFile.c_str(), gmode);
//         if(n < 0)
//         {
//             std::cerr << "mkfifo error "<< std::endl;

//             return;
//         }

//         std::cout<<"make mkfifo success" <<std::endl;
//         sleep(10);
//     }

//     ~Init()
//     {
//         int n = unlink(gpipeFile.c_str());
//         if(n < 0)
//         {
//              std::cerr << "unlink error" <<std::endl;
//              return;
//         }
//         std::cout<< " unlink success" <<std::endl;
//     }
// };

// Init init;
